package com.example.demotest.service;

import com.example.demotest.pojo.ResponseMessage;
import com.example.demotest.pojo.User;
import com.example.demotest.pojo.UserProfile;
import com.example.demotest.pojo.dto.ChangePasswordDto;
import com.example.demotest.pojo.dto.UserDto;
import com.example.demotest.pojo.dto.UserProfileDto;

import java.util.Optional;

public interface IUserService {
    /**
     * 插入用户
     *
     * @param user
     * @return
     */
    User add(UserDto user);

    /**
     * 查询用户
     * @param userId
     * @return
     */
    UserDto getUser(Integer userId);


    /**
     * 修改用户
     * @param user
     * @return
     */
    User edit(UserDto user);


    /**
     * 删除用户
     *
     * @param userId
     */
    void delete(Integer userId);

    User register(UserDto userDto);

    Optional<User> findByUserName(String userName);

    ResponseMessage<User> login(UserDto userDto);

    UserProfile getUserInformation(Integer userId);

    UserProfile updateUserProfile(Integer userId, UserProfileDto dto);

    User updateUserPassword(Integer userId, ChangePasswordDto dto);

    User updateUserNickname(Integer userId, User dto);

    void updateAvatar(Integer userId, String fileUrl);
}
